package main;

/**
 * Clase de "aproximación Singleton" donde se guardan los datos
 * del problema actual de manera global y estatica para que las
 * interfaces graficas los manipulen.
 * 
 * @author age, joaquinmonleon
 *
 */
public class DatosProblema {
	
	// Propiedades globales estaticas del problema actual
	public static Integer	Variables		= 3;
	public static Integer	Restricciones	= 3;
	public static Integer	Objetivos		= 1;
	public static TOptimo	Optimo			= TOptimo.Max;
	
	// Constamtes y enums
	public enum TOptimo {
		Max, Min, menosMax, menosMin
	}
	
	// Metodos utilidad
	public static void guardar(
			Integer Variables, 
			Integer	Restricciones,
			Integer	Objetivos,
			TOptimo	Optimo
			) {
		DatosProblema.Variables = Variables;
		DatosProblema.Restricciones = Restricciones;
		DatosProblema.Objetivos = Objetivos;
		DatosProblema.Optimo = Optimo;
	}
	
	public static String OptimoText(TOptimo tipo) {
		if		(tipo == TOptimo.Max)		return "Max";
		else if (tipo == TOptimo.Min)		return "Min";
		else if (tipo == TOptimo.menosMax)	return "-Max";
		else if (tipo == TOptimo.menosMin)	return "-Min";
		else return "";
	}
	public static String OptimoText() {
		return OptimoText(Optimo);
	}
	public static TOptimo OptimoValue(String texto) {
		if		(texto.equals("Max"))	return TOptimo.Max;
		else if (texto.equals("Min"))	return TOptimo.Min;
		else if (texto.equals("-Max"))	return TOptimo.menosMax;
		else if (texto.equals("-Min"))	return TOptimo.menosMin;
		else return TOptimo.Max;		
	}
	public static void OptimoSet(String texto) {
		Optimo = OptimoValue(texto);
	}
	
	public static void mostrar() {
		System.out.print (
				"Variables = " + Variables + "\n" + 
				"Restricciones = " + Restricciones + "\n" + 
				"Objetivos = " + Objetivos + "\n" + 
				"Optimo = " + Optimo.toString() + "\n" 
			);			
	}
}
